package com.blkj.iam.system.model.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.blkj.iam.common.base.BaseEntity;
import com.blkj.iam.system.model.vo.ShowRoleInfoVO;
import lombok.Getter;
import lombok.Setter;

/**
 * 角色实体
 *
 * @author Ray.Hao
 * @since 2024/6/23
 */
@TableName("sys_role")
@Getter
@Setter
public class Role extends BaseEntity {

    /**
     * 角色名称
     */
    private String name;

    /**
     * 角色编码
     */
    private String code;

    /**
     * 显示顺序
     */
    private Integer sort;

    /**
     * 角色状态(1-正常 0-停用)
     */
    private Integer status;

    /**
     * 数据权限
     */
    private Integer dataScope;

    /**
     * 创建人 ID
     */
    private Long createBy;

    /**
     * 更新人 ID
     */
    private Long updateBy;

    /**
     * 是否删除(0-否 1-是)
     */
    private Integer isDeleted;

    /**
     * 租户ID
     */
    private Long tenantId;

    /**
     * 雪花ID
     */
    private String idStr;

    /***
     * 角色类型 0 正常 1 预制
     */
    private Integer type;

    /**
     * 角色类型: 1 部门角色  0 系统角色
     */
    private Integer roleType;

    /**
     * 组织机构类型：0 平台 1 监管区 2 过货商 3 供箱单位 4 担保商 5 供应商 6 贸易商 7 蒙方承运单位 8 中方承运单位 9 收货方 10 下游客户 14 公司
     */
    private Integer itemType;

    /**
     * 组织机构ID
     */
    private String departId;

    /**
     * 组织机构名称
     */
    private String departName;

    /**
     * 组织机构ID
     */
    private String sysOrgCode;

    /**
     * 平台角色类型，0-场站管理员，1-外调管理员，2-门户审核人员，3-门户客服人员
     */
    private String ptUserType;

    /**
     * 创建者
     */
    private String createUser;

    /**
     * 修改者
     */
    private String updateUser;

    // 转换为
    public static ShowRoleInfoVO toShowRoleInfo(Role role) {
        ShowRoleInfoVO showRoleInfo = new ShowRoleInfoVO();
        showRoleInfo.setId(role.getId().toString());
        showRoleInfo.setRoleName(role.getName());
        showRoleInfo.setRoleCode(role.getCode());
        showRoleInfo.setCreateBy(role.getCreateUser());
        showRoleInfo.setCreateTime(role.getCreateTime());
        showRoleInfo.setUpdateBy(role.getUpdateUser());
        showRoleInfo.setUpdateTime(role.getUpdateTime());
        showRoleInfo.setTenantId(role.getTenantId().toString());
        showRoleInfo.setType(role.getType());
        showRoleInfo.setRoleType(role.getRoleType());
        showRoleInfo.setItemType(role.getItemType());
        showRoleInfo.setDepartId(role.getDepartId());
        showRoleInfo.setDepartName(role.getDepartName());
        showRoleInfo.setSysOrgCode(role.getSysOrgCode());
        showRoleInfo.setPtUserType(role.getPtUserType());
        showRoleInfo.setIdStr(role.getIdStr());
        return showRoleInfo;
    }
}